﻿Imports WSEntidades
Imports Utilerias
Imports WSDatos
Imports System.Transactions
Public Class FormapagBL

    Public Function RegistrarFormapag(ByVal TokenConexion As String, ByVal FormaPag As FormapagBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        If (EsValidoParaRegistraryActualizar(FormaPag, Enumeraciones.operacionesCatalogos.Registrar, detResp.Mensajes)) Then
            Dim ForpagDAL As FormapagDAL = New FormapagDAL("")
            Try
                ForpagDAL = New FormapagDAL(RijndaelSimple.desencriptaDefault(TokenConexion))
                If (ForpagDAL.existeFormapag(FormaPag.DesFormaP)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_PreviamenteRegistrado,
                                             "Existe un registro con la descripcion de forma de pago indicado" & vbCrLf & detResp.Mensajes)
                    Return False
                Else
                    If (ForpagDAL.registraFormapag(FormaPag)) Then
                        detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK, "")
                        Return True

                    Else
                        detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueRegistrado,
                                                 "La Forma de Pago no pudo ser registrada en el sistema" & vbCrLf & detResp.Mensajes)
                        Return False
                    End If

                End If
            Catch ex As Exception
                Log.LogException(ex, "FormapagBL.RegistrarFormapag")
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                        detResp.Mensajes & "Excepción al registrar Forma de Pago: " & ex.Message)
                Return False
            Finally
                ForpagDAL = Nothing
            End Try
        Else
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                     "La Forma de Pago no es valida para registrar: " & vbCrLf & detResp.Mensajes)
            Return False
        End If
    End Function

    Public Function ActualizaFormapag(ByVal TokenConexion As String, ByVal FormaPag As FormapagBE, ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim ForpagDAL As FormapagDAL = New FormapagDAL("")
        Try
            If (EsValidoParaRegistraryActualizar(FormaPag, Enumeraciones.operacionesCatalogos.Actualizar, detResp.Mensajes)) Then
                ForpagDAL = New FormapagDAL(RijndaelSimple.desencriptaDefault(TokenConexion))
                If (ForpagDAL.actualizaFormapag(FormaPag, detResp.Mensajes)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Datos Forma de Pago Actualizados.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de Datos Forma de Pago." & vbCrLf &
                                             "Verifique que el Id de forma de Pago esté registrado en el sistema." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "FormapagBL.ActualizaFormapag")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al actualizar Forma de Pago: " & ex.Message)
            Return False
        Finally
            ForpagDAL = Nothing
        End Try
    End Function

    Public Function CambiaEstatusFormaPago(ByVal tokenConexion As String, ByVal IdFormaPag As Integer, ByVal setActivo As Boolean,
                                           ByRef detResp As DetalleRespuesta) As Boolean
        detResp.Mensajes = ""
        Dim ForpagDAL As FormapagDAL = New FormapagDAL("")
        Try
            If (EsValidoParaGetFormapag(IdFormaPag, detResp.Mensajes)) Then
                ForpagDAL = New FormapagDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
                If (ForpagDAL.cambiaEstatus(IdFormaPag, setActivo)) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Estatus de la Forma de Pago Actualizado.")
                    Return True
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoFueActualizado,
                                             "No se pudo realizar la actualización de estatus de la Forma de Pago." & vbCrLf &
                                             "Verifique que el Id de forma de Pago esté registrado en el sistema." & vbCrLf & detResp.Mensajes)
                    Return False
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "La informacion no es valida para actualizar: " & vbCrLf & detResp.Mensajes)
                Return False
            End If
        Catch ex As Exception
            Log.LogException(ex, "FormapagBL.CambiaEstatusFormaPago")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al actualizar estatus de la Forma de Pago: " & ex.Message)
            Return False
        Finally
            ForpagDAL = Nothing
        End Try
    End Function

    Private Function EsValidoParaRegistraryActualizar(ByRef pFormapag As FormapagBE, ByVal operacion As Enumeraciones.operacionesCatalogos, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (operacion = Enumeraciones.operacionesCatalogos.Actualizar) Then
                If (String.IsNullOrEmpty(pFormapag.IdFormaP)) Then
                    mensaje &= "El Id de Forma de Pago es requerido." & vbCrLf
                Else
                    If (pFormapag.IdFormaP <= 0) Then
                        mensaje &= "El Id de Forma de Pago debe ser mayor a 0 y estar previamente registrado." & vbCrLf
                    End If
                End If
            End If

            If (String.IsNullOrWhiteSpace(pFormapag.DesFormaP)) Then
                mensaje &= "El campo descripcion Forma de Pago es obligatorio, no puede ir vacio." & vbCrLf
            Else
                If (pFormapag.DesFormaP.Length > 255) Then
                    pFormapag.DesFormaP = pFormapag.DesFormaP.Trim.Substring(0, 255)
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "FormapagBL.EsValidoParaRegistraryActualizar")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function GetFormapag(ByVal tokenConexion As String, ByVal IdFormaP As Integer, ByRef detResp As DetalleRespuesta) As FormapagBE
        detResp.Mensajes = ""
        Dim ForpagDAL As FormapagDAL = New FormapagDAL("")
        Dim ForpagBE As FormapagBE
        Try
            ForpagDAL = New FormapagDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
            If (EsValidoParaGetFormapag(IdFormaP, detResp.Mensajes)) Then
                ForpagBE = ForpagDAL.getFormapag(IdFormaP)
                If (ForpagBE IsNot Nothing) Then
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                             "Se obtuvo la información de la forma de pago con éxito.")
                    Return ForpagBE
                Else
                    detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_RegistroInexistenteOInactivo,
                                             "No se obtuvo la información de la Forma de Pago" & vbCrLf & detResp.Mensajes)
                    Return Nothing
                End If
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ValoresInvalidos,
                                         "El ID de la forma de pago proporcionado no existe: " & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "FormapagBL.GetFormapag")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al obtener datos de la forma de pago: " & ex.Message)
            Return Nothing
        Finally
            ForpagDAL = Nothing
        End Try
    End Function

    Private Function EsValidoParaGetFormapag(ByRef IdFormaP As Integer, ByRef mensaje As String) As Boolean
        mensaje = ""
        Try
            If (String.IsNullOrEmpty(IdFormaP)) Then
                mensaje &= "El campo ID de la Forma de Pago no puede ir  vacio." & vbCrLf
            Else
                If (IdFormaP <= 0) Then
                    mensaje &= "El Id de la Forma de Pago debe ser mayor a 0 y estar previamente registrado en el sistema." & vbCrLf
                End If
            End If

            Return (mensaje = "")
        Catch ex As Exception
            Log.LogException(ex, "Formapag.EsValidoParaGetFormapag")
            mensaje &= ex.Message
            Return False
        End Try
    End Function

    Public Function GetListadoFormapagxtexto(ByVal tokenConexion As String, ByVal DesFormaP As String,
                                            ByVal tipoEstatus As Enumeraciones.estatusParaBusquedas, ByRef detResp As DetalleRespuesta) As List(Of FormapagBE)
        detResp.Mensajes = ""
        Dim forpagDAL As FormapagDAL = New FormapagDAL("")
        Dim listforpagBE As List(Of FormapagBE)
        Try
            forpagDAL = New FormapagDAL(RijndaelSimple.desencriptaDefault(tokenConexion))
            listforpagBE = forpagDAL.getlistadoFormapagxtexto(DesFormaP, tipoEstatus)
            If (listforpagBE IsNot Nothing) Then
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ProcesamientoOK,
                                         "Se obtuvo el listado de las formas de pago con éxito.")
                Return listforpagBE
            Else
                detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.Catalogo_NoObtuvoRegistrosParaListado,
                                         "No se obtuvo el listado de las Formas de Pago" & vbCrLf & detResp.Mensajes)
                Return Nothing
            End If
        Catch ex As Exception
            Log.LogException(ex, "FormapagBL.GetListadoFormapagxtexto")
            detResp.estableceValores(DetalleRespuesta.CodigoRespuesta.ExcepcionEnOperacion,
                                     detResp.Mensajes & "Excepción al obtener el listado de formas de pago: " & ex.Message)
            Return Nothing
        Finally
            forpagDAL = Nothing
        End Try
    End Function

End Class
